package demo.day09

fun main() {
    println(Teacher(Exam.FractionA("Kiki")).show())
    println(Exam.FractionA("AAA") === Exam.FractionA("AAA"))
}

// 密封类 成员必须有类型 并且要继承本类
sealed class Exam {
    object FractionD : Exam() // 差
    object FractionC : Exam()// 及格
    object FractionB : Exam() // 良好
    class FractionA(val studentName: String):Exam() // 优秀

//    var studentName: String? = null
}

class Teacher(private val exam: Exam) {
    fun show() =
        when (exam) {
            is Exam.FractionA -> "${this.exam.studentName}很优秀"
            is Exam.FractionB -> "良好哦"
            is Exam.FractionC -> "及格了"
            is Exam.FractionD -> "很差"
            // 由于我们的show函数是使用枚举类型来作为判断处理的 这个就属于 代数数据类型 不需要写else
            // else ->
        }

}